home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / source / lib / powerd_lib.lha / PowerD / DupStrPooled.ass < prev    next >
Text File  |  2000-02-29  |  598b  |  33 lines

  1. ; a0 - pool
  2. ; a1 - source string
  3.  
  4.     xdef    _DupStr
  5.  
  6. _DupStr    movem.l    d2/a2/a6,-(a7)
  7.  
  8.     movea.l    a1,a2        ; store str
  9.     move.l    a1,d1
  10. .loop1    tst.b    (a1)+
  11.     bne.s    .loop1
  12.     move.l    a1,d0
  13.     sub.l    d1,d0        ; source string length
  14.  
  15.     addq.l    #4,d0        ; add header and zero byte
  16.     move.l    d0,d2
  17.     movea.l    $4.w,a6
  18.     jsr    (-708,a6)        ; AllocPooled()
  19.     tst.l    d0
  20.     beq.s    .finish
  21.     addq.l    #2,d0        ; shift by header
  22.     movea.l    d0,a1
  23.     move.w    d2,(-2,a1)    ; this is private, and can be used only with RemStr()
  24.     move    a1,d0
  25.  
  26. .loop    move.b    (a2)+,(a1)+    ; copy src to dst
  27.     beq.s    .finish
  28.     dbf.s    d2,.loop
  29.     clr.b    (-1,a1)
  30.  
  31. .finish    movem.l    (a7)+,d2/a2/a6
  32.     rts
  33.